package cn.csg.iotplatform.module.system.controller.admin.publicnotice.vo;

import cn.csg.iotplatform.framework.common.enums.CommonStatusEnum;
import cn.csg.iotplatform.module.common.annotations.DictField;
import cn.csg.iotplatform.module.system.dal.dataobject.flow.WorkFlowParams;
import org.springframework.format.annotation.DateTimeFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.time.LocalDateTime;

import static cn.csg.iotplatform.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;

@Schema(description = "管理后台 - 公共通知 Response VO")
@Data
public class PublicNoticeListRepVO extends WorkFlowParams {

    /**
     * 公告ID
     */
    @Schema(description = "公告ID")
    private Long id;
    /**
     * 公告标题
     */
    @Schema(description = "公告标题")
    private String title;
    /**
     * 公告类型
     *
     * 枚举 {@link cn.csg.iotplatform.module.system.enums.publicnotice.PublicNoticeTypeEnum}
     */
    @DictField(dictType = "NOTICE_TYPE")
    @Schema(description = "公告类型")
    private Integer type;
    /**
     * 公告内容
     */
    @Schema(description = "公告内容")
    private String content;
    /**
     * 公告状态
     *
     * 枚举 {@link CommonStatusEnum}
     */
    @Schema(description = "公告状态")
    @DictField(dictType = "APPROVE_TYPE")
    private Integer status;
    /**
     * 申请时间
     */
    @Schema(description = "申请时间")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private LocalDateTime applyTime;

    /**
     * 发布时间
     */
    @Schema(description = "发布时间")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private LocalDateTime publishTime;

    /**
     * 发布单位
     */
    @Schema(description = "发布单位")
    private String publishDept;
    /**
     * 接收单位
     */
    @Schema(description = "接收单位")
    private String receiveDepts;

    @Schema(description = "接收单位ID")
    private String receiveDeptIds;

    @Schema(description = "当前处理人ID")
    private String todoEmps;

    @Schema(description = "当前处理人")
    private String todoEmpNames;

    /**
     * 流程节点状态
     */
    @Schema(description = "流程节点状态")
    private String wfState;

    /**
     * 最终审批人
     */
    @Schema(description = "审批人")
    private String approved;

    /**
     * 审批意见
     */
    @Schema(description = "审批意见")
    private String approveOpinion;

    /**
     * 最终审批人名称
     */
    @Schema(description = "审批人名称")
    private String approvedName;

    /**
     * 审批时间
     */
    @Schema(description = "审批时间")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private LocalDateTime  approveTime;

    /**
     * 发起人名称
     */
    @Schema(description = "发起人名称")
    private String starterName;

    /**
     * 文件名称
     */
    @Schema(description = "文件名称")
    private String  attachName;

    /**
     * 文件路径
     */
    @Schema(description = "文件路径")
    private String attach;

}
